//2025-4-21

//与非门
//先与后非

`timescale 1ns/10ps
module nand_gate(A,B,Y); //括号里面是端口

//定义属性
    input A;
    input B;
    output Y;

    assign  Y = ~(A&B);

endmodule


//testbench of nand_gate
module nand_gate_tb;
// 异名例化
// 异名例化就是给每个模块实例赋予唯一名字，
// 方便在顶层模块中对各实例进行单独引用、连接和调试。

//输入定义为reg型的变量
//要观察的变量定义为wire类型

reg aa,bb;
wire yy;

nand_gate nand_gate(.A(aa), .B(bb), .Y(yy));

initial begin
        aa <=0; bb <=0; //开始先让aa bb 为0
    #10 aa <=0; bb <=1;
    #10 aa <=1; bb <=0;
    #10 aa <=1; bb <=1;
    #10 $stop;
end

endmodule


//如果是4位与非门
//只需修改
// input[3:0] A;
// input[3:0] B;
// output[3:0] Y;
